Robust delivery of video data

ABSTRACT

The systems and methods described herein relate to the robust delivery of data. A transmitter (e.g. a server or RF broadcaster) passes parameters to a receiver and/or client enabling operation of a generalized buffer model within the receiver that regulates the proper decoding of the elementary stream. An exemplary transmitter system is configured to perform a method for specifying buffer control parameters and transmitting them within an MPEG-2 Transport Stream to a receiver. The receiver is configured to implement the generalized buffer model according to the parameters received within the stream.

RELATED APPLICATIONS

[0001] This application claims the benefit of U.S. Provisional Application No. 60/478,731, filed Jun. 13, 2003, entitled “Robust Delivery of Video Data”, which is hereby incorporated by reference.

TECHNICAL FIELD

[0002] The systems and methods described herein relate to the robust delivery of data, including the passage of parameters governing buffer operation from a transmitter (e.g. a broadcaster's head-end facility or server) to a receiver or client, and the operation of a buffer within the receiver in the course of decoding data from a video elementary stream.

BACKGROUND

[0003] Traditional approaches to multimedia streaming provide content that is encoded at a constant or variable bit rate and transmitted from a server to one or more clients over a transmission channel with finite and fixed capacity. For example, standard telephone quality audio content is often encoded at 64 K bits per second (b/s). Therefore, a telephone transmission channel must have a throughput of at least 64 K b/s to properly stream the audio content.

[0004] In newer developments, video content or other content (e.g. audio, data, etc.) may be delivered over the communication channel using an adjustable transmission bit rate, wherein the adjustable transmission bit rate may be balanced with robustness. One reason for concern over robustness is that some forms of data transmission—such as over-the-airwaves RF broadcast—may require levels of data protection against transmission errors that are to a degree a function of the current weather conditions and/or geographic topology of the area wherein the signal is broadcast and received. For example, a thunder storm may induce higher levels of interference. Thus, a server or transmitter may select an appropriate degree of data protection to provider a higher degree of robustness in the transmission. A higher degree of data protection is typically achieved by increasing the power of channel coding techniques (such techniques increase the level of redundancy in the data) which leads to a reduced bit rate for the transmission of information (video, audio or data).

[0005] Accordingly, an over-the-airwaves RF transmitter may select a more robust mode of data transmission under circumstances that threaten the overall quality of service planned by the service provider or transmitter. For example, where bad weather reduces the effective information data transmission rate, it may be necessary to use a greater amount of the available bandwidth to provide redundancy. Such redundancy may include the use of a cyclical redundancy code (CRC) or convolutional block codes within the transmission. Accordingly, the bandwidth remaining for content transmission may be reduced, possibly resulting in lower video content display resolution.

[0006] Unfortunately, where the available information bandwidth changes and the transmitter changes the amount of the bandwidth devoted to redundancy, known receivers may fail to buffer and process the incoming data in an efficient manner.

SUMMARY

[0007] The systems and methods described herein relate to robust delivery of data. A transmitter (e.g. a broadcaster head-end facility and/or a server) passes parameters to a receiver and/or client enabling operation of a generalized buffer model within the receiver. The generalized buffer model is designed in accordance with the adjustable transmission rates allowed by a robust delivery system. An exemplary transmitter is configured for generation and specification of buffer control parameters and for transmission of the parameters within an MPEG-2 Transport Stream to a receiver. The receiver is configured to implement the generalized buffer model according to the parameters received within the stream.

BRIEF DESCRIPTION OF THE DRAWINGS

[0008] The same numbers are used throughout the drawings to reference like features and components.

[0009]FIG. 1 is a block diagram of an exemplary server/transmitter and an exemplary client/receiver in accordance with the systems and methods described herein.

[0010]FIG. 2 is a block diagram illustrating additional detail within the exemplary server or transmitter.

[0011]FIG. 3 is a block diagram illustrating additional detail within the exemplary client or receiver.

[0012]FIG. 4 is a graph showing an exemplary relationship between redundancy and bit rate (bandwidth).

[0013]FIG. 5 is a graph that is similar to that of FIG. 4, but which shows even further accentuation of the decrease in bandwidth corresponding to an increase in use of a redundant channel.

[0014]FIG. 6 is a graph showing an exemplary relationship between the data transfer rate and the minimal buffer size for selected values of buffer fullness, thereby illustrating exemplary points which may be used to configure a buffer.

[0015]FIG. 7 is a flow diagram of an exemplary method of operation of a transmitter or server.

[0016]FIG. 8 is a flow diagram of an exemplary method by which buffer parameters may be set.

[0017]FIG. 9 is a flow diagram of an exemplary method of operation of a receiver or client.

[0018]FIG. 10 is an example of a computing operating environment capable of implementing the server side and/or the client side of the systems and methods described herein.

DETAILED DESCRIPTION

[0019] The systems and methods described herein relate to the robust delivery of data, from a transmitter (e.g. a broadcaster head-end facility or server) to a receiver or client. The data may include mixed audio and video data such as that included within conventional or high-definition (HDTV) digital television representations. Data, delivery of which is governed by the operations of a well defined reference buffer model, is included within a data stream sent to the receiver. For example, the transmitter may be configured to specify buffer control parameters, which indicate the data transmission rate, the buffer size and the initial buffer fullness values prior to data removal, for use by the receiver. The parameters may be included within an MPEG-2 Transport Stream as part of a data structure (e.g., a table) transmitted at frequent intervals. The receiver may be configured to obtain the parameters from the Transport Stream and to configure its acquisition operations according to the reference buffer model specified by the aforementioned parameters.

[0020]FIG. 1 is a block diagram of an exemplary environment 100, within which a server or transmitter 102 may transmit data to a client or receiver 104 across a network or the broadcast airwaves 106. The transmitter 102 may transmit using an RF signal over the airwaves 106 to the receiver 104. For example, a digital television station may transmit to a television receiver, possibly having a set-top box for decoding the digital signal. The digital TV station may broadcast standard resolution or high-definition television signals. Alternatively, the server 102 may send streaming data over the Internet 106 to a client 104.

[0021]FIG. 2 is a block diagram illustrating a portion 200 of an exemplary server or transmitter 102 (FIG. 1). A signal 202 indicates a transmitter selection of a level of robustness at which to transmit data. As will be further discussed with reference to FIGS. 4-6, the desired robustness, and the associated rate of information transmission, can be related to environmental or geographical factors where an over-the-air (radio frequency) means of transmission is employed. The transmitter therefore evaluates the conditions (e.g. weather, sun spots, hills, canyons, service type, etc.) and decides how robust the data transmission must be to deliver service of a targeted quality level. Other factors such as transmission power and characteristics of antennas may influence the transmitter's selection as well. This information is transmitted by the signal 202 to a robust transmission modes selection device or procedure 204, which can be implemented in hardware, firmware or software. At the robust transmission modes selection device or procedure 204, information 206 on rates of data transmission corresponding to the degree of robustness desired are selected for transmission to the video encoder 208. Video and audio encoders 208, 210 can be configured for operation using a Windows Media Video encoder or any other video encoder including MPEG-2, MPEG-4, H.264 encoders, or any desired technology. The video encoder 208 provides profile and level data 212 and generalized reference buffer parameter data 214 to the MPEG descriptor generator 216. The video encoder 208 compresses the video or audio elementary stream at a nominal data rate (typically one of the rates supplied in 206) and sends the compressed data to the program multiplexer 218.

[0022] The descriptor generator 216 is configured to generate a descriptor according to a syntax convention, such as the profile and level sub-descriptor syntax seen in Table 1, below. An exemplary description generator 216 may be configured for MPEG compatibility; however, the description generator 216 could be made compatible with an alternative transmission protocol or a different location in the bit stream. Notwithstanding the exemplary descriptor shown, the format and information contained within the descriptor, as well as the location of this information in the transmitted bit-stream, can be varied according to the requirements of a particular application. An exemplary syntax for use in forming the descriptor produced by the descriptor generator 216 is seen in Table 1, below. TABLE 1 Syntax for the Profile and Level sub-descriptor Syntax Bits Format sd_profile_level() {  subdescriptor_tag 8 0x01  profile_level 8 uimsbf  bm_params_count 8 uimsbf  for(i=0; i<bm_params_count; i++){   reserved 2 ‘11’   bit_rate_value 22 uimsbf   reserved 2 ‘11’   vbv_buffer_size 22 uimsbf  } }

[0023] The data structure seen in Table 1 is exemplary, and alternative terminology, variable names, bit-lengths and formats could be employed to result in similar functionality. An exemplary implementation of the profile_level field seen in Table 1, can be further described by Table 2, below. TABLE 2 List of values for the profile_level field Assigned Value Description 0x00 Reserved 0x11 Simple Profile, Low Level 0x12 Simple Profile, Medium Level 0x13-0x50 Reserved 0x51 Main Profile, Low Level 0x52 Main Profile, Medium Level 0x53 Main Profile, High Level 0x54-0xFF Reserved

[0024] The descriptor generator 216 delivers a data structure similar to that described by Tables 1 and 2 to the system information inserter 220, which may be based on MPEG-2 technology. The descriptor may be designed to convey multiple sets of (R, B, F) (rate, buffer size, fullness) tuplets. (An example of multiple sets of (R, B, F)-tuplets is seen in FIG. 6, and is discussed below.) An exemplary system information inserter 220 may feed the descriptor information generated by descriptor generator 216 into a multiplexer 222 at regular intervals, such as, for example, every 0.4 seconds.

[0025] Additionally, the output of the audio encoder 210 and the video encoder 208 are multiplexed by a program multiplexer 218 and sent to multiplexer 222 to be multiplexed with the descriptor information from the inserter 220. The output of the multiplexer 222 may be an MPEG-2 Transport Stream comprising packets of audio, video elementary streams as well as packets containing information such as the descriptor defined in Table 1. The resulting MPEG-2 Transport Stream (or any alternate link-layer protocol) may then be encoded, converted to an analog signal, modulated and finally transmitted via an antenna to a receiver in a conventional manner, such as by RF transmission.

[0026] As seen above, FIG. 2 may interpreted in a manner which characterizes the transmitter as employing RF (radio frequency broadcast) tools to service a metropolitan area, or as employing the Internet to provide global service. However, the transmitter may also be configured on a much smaller scale, such as a home network. In this configuration, the transmitter is an Access Point of a home wireless network. The transmitter's head end may be configured utilizing a home PC, and the receivers (indicated at 104 in FIG. 1) may include TV receivers and other portable or fixed devices. Accordingly, the scale of the transmitter, client and network may be refined according to the needs of a particular design requirement.

[0027]FIG. 3 is a block diagram illustrating a portion 300 of an exemplary client or receiver 104 (FIG. 1). The client 104 is configured to receive data from the server/transmitter 102 and to detect descriptor within transmitted data. The client is configured to decide which conventional and robust channels within the transmitted data (see FIGS. 5, 6 and associated discussion) to select to reliably receive audio, video and data elementary streams by monitoring reception characteristics and statistics. The client is further configured to determine a data transmission rate and to identify a corresponding set of buffer parameters from the descriptor. Using the selected transmission channel(s), the receiver configures memory resources and flow control logic to provide elementary stream acquisition according to guidelines embodied by buffer parameters associated with the selected transmission channel. As in-coming data fills a buffer, the data is decoded when the buffer contains a quantity of data equal or greater than the specified initial buffer fullness value.

[0028] Continuing to refer to FIG. 3, an incoming video elementary stream 302 is received by the video elementary buffer 304. The video elementary buffer 304 is typically configured automatically by hardware, upon receipt of the descriptor generated by the descriptor generator 216 (FIG. 2). As seen above, the descriptor may be re-transmitted at frequent intervals, such as more than twice a second. This allows any receiver to quickly receive the descriptor data and configure the video elementary buffer 304 upon powering on. Similarly, upon receiving a descriptor having new or updated data, the receiver is able to reconfigure its buffer operation based on the new data, which may include the data transmission rate, the minimum buffer size and the initial buffer fullness required before data is removed from the buffer. The descriptor itself, or the information it carries could also be obtained as part of a request-response protocol over a bi-directional channel, or it could be obtained from a separate out-of-band broadcast channel. In particular, the video elementary buffer 304 is configured, according to the descriptor's information, to a suggested reference size; to receive data at an in-coming rate; and to remove data and start decoding the first picture in the elementary stream when the buffer has reached a certain degree of fullness.

[0029] Data removed from the buffer 304, such as picture bits 306, are decoded by a video decoder 308 for use by other portions of the receiver 104 (FIG. 1).

[0030] The receiver 104 is capable of detecting the effective bit rate (and therefore the degree of robustness used in the robust channel) by monitoring the symbol rate on the main channel and the symbol rate on the robust channel. Symbol rate may be estimated after the demodulation and channel decoding stage in the receiver. The receiver is also capable of monitoring the quality of the transmitted signal via the calculation of several quantities including signal-to-noise ratio, carrier-to-noise ratio, average energy or signal strength of the TV signal (the 6 Mhz band to which the receiver is tuned), peak energy or signal strength of the TV signal, number of corrupted MPEG-2 packets in a given time window, run-length of corrupted MPEG-2 packets, or residual energy in the equalizing filter. Such quantities may be used by the receiver to make an instantaneous selection of either the main portion of the channel or the robust portion of the channel depending on the value of some of these quantities. The selection may be done seamlessly or under the control of a timing mechanism ensuring that usage of either portion of the transmission channel lasts for a nominal time window. The receiver uses the main (conventional robustness) portion of the channel to get video, audio and data elementary streams when acquisition conditions are acceptable. Switching to acquisition of video, audio and data elementary streams from the robust portion of the channel is performed when quantities calculated to monitor the quality of the signal indicate that conditions have deteriorated. When switching occurs, the receiver uses the reference buffer parameters transmitted in the descriptor of Table 1 (or any other similar table) to adjust its acquisition buffer according to the information rate observed in the newly selected portion of the transmission channel. Switching to using the robust portion of the transmission channel may result in a lower quality of service for the video, audio or data since the robust channel typically brings a reduced bandwidth compared to the main channel. Alternatively, switching from the main (conventional) portion of the transmission channel to the robust portion of the channel may trigger the change of the video, audio and data decoder used to decode and render the audio-visual information. For example, a conventional MPEG-2 decoder may be associated with the main portion of the channel and the decoder for a more efficient coding scheme like Windows Media 9 or H.264 may be associated with the robust portion of the transmission channel. In this case, use of a more efficient coding scheme with the robust mode allows a transmitter to match quality of service (similar perceived quality in the rendered video, audio, data) across the conventional and robust portions of the 6 Mhz transmission channel. Adjustment of the buffer operations by the receiver is desirable to optimize the delay that may follow from the sub-channel switching operation. Optimal selection of the buffer parameters may also allow a receiver to use memory resources for other purposes.

[0031]FIG. 4 is a graph 400 showing the relationship between redundancy and bit rate (bandwidth). Such a relationship can result from selections made by the robust transmission modes selection module or device 204, wherein one of a plurality of discrete levels of robust data transmission may be selected according to a perception of the data redundancy required. The effective rate of information data transmission is seen on the vertical axis 402, and discrete steps indicating increasing use of a robust ½ rate channel coding mode is seen on the horizontal axis 404. The total bit rate (i.e. bandwidth) 406 is seen to fall off with increasing degree of robustness. The figure illustrates the case where only a portion 410 of a communication channel is targeted for increased robustness while the other portion of the same communication channel remains subject to a typical level of robustness. This situation is consistent with the new, enhanced, 8-VSB modulation mode that the Advanced Television System Committee (ATSC) is currently entertaining, which will allow transmitters to dedicate a portion of a 6 MHz communication channel to provide greater robustness against data corruption. It can be noticed that the fall off behavior occurs both in the main portion 408 of the transmission channel subject to conventional channel coding (robustness) and the portion 410 of the communication channel selected for more powerful channel coding (increased robustness).

[0032]FIG. 5 is a graph 500 that is similar to that of FIG. 3, but which shows even further accentuation of the decrease in bandwidth corresponding to a further increase in use of data redundancy in the portion 510 of the transmission channel. As seen in FIG. 2, such an increase (or decrease) may result from operation of the robust transmission modes selection device or procedure 204 (FIG. 2). The rate of data transmission is seen on the vertical axis 502, and discrete steps indicating increasing use of a robust ¼ rate channel coding mode is seen on the horizontal axis 504. The total bit rate (i.e. bandwidth) 506 is seen to fall off to a greater degree than seen in FIG. 4 with increasing use of the robust channel 510. Accordingly, the main channel 508 includes less bandwidth than it would where a less robust second channel was used.

[0033]FIG. 6 is a graph 600 showing an exemplary relationship between the data transfer rate along the horizontal axis 604 and the minimal size of the reference elementary stream buffer (e.g. buffer 304 of FIG. 3) along the vertical axis 602. Selected values 606-610 are plotted along the curve, at which a buffer 304 (FIG. 3) may be configured. The exemplary points 606-610 each include three values, (R, B, F), which comprise values for rate of data transfer, buffer size and buffer fullness, i.e. how full the buffer must be before data at the very beginning of the elementary stream may start being withdrawn. The (R, B, F) values may be used to configure the video elementary buffer 304 (FIG. 3) of the client 104 (FIG. 1).

[0034] By inspection of the graph 600, it can be seen that slower data rates result in the need for a larger buffer. In an extreme case of slow transmission rate, most of a TV show would have to be buffered prior to viewing to prevent buffer underflow. In contrast, high data transmission rates result in the need for a smaller buffer. The value for F (buffer fullness required before data withdrawal) is set to indicate the minimal amount of data to cache in the buffer before a receiver begins to remove data and decode the first picture. The value for F prevents under-flow conditions (i.e. a condition wherein there is not enough data available in the buffer to continue normal decoding operations) and over-flow situations (i.e. a situation wherein data has been lost for lack of buffer space) in the buffer. Note that the region to the upper right of the curve includes locations 612 which represent workable buffer parameters, while the region to the lower left of the curve includes locations which represent unworkable buffer parameters.

[0035] The flow chart of FIG. 7 illustrates a further exemplary implementation, wherein a method 700 is employed to operate a server or transmitter 102 (FIG. 1). At block 702, conditions requiring redundancy are identified or detected, such as bad weather conditions which may interfere with a broadcast DTV (digital TV) or HDTV (high-definition TV) transmission. For example, the conditions (weather, etc.) may be inserted at 202 (FIG. 2) into the robust transmission modes selection module 204.

[0036] At block 704, an algorithm, graph or a table is used to generate the parameter values for data transfer rate, minimally required buffer size and initial buffer fullness corresponding to the possible conditions established in 702, e.g. the values (R, B, F). While the configuration of an (R, B, F) data structure is flexible, a descriptor data structure representing the (R, B, F) parameters may be based on the example of Tables 1 and 2, or similar configuration. In the exemplary environment of FIG. 2, these values may be generated by the MPEG-2 descriptor generator 216, and reflect a family of information data transmission rates (i.e. the bandwidth) from which the transmitter may select in the future. For example, FIG. 6 illustrates an exemplary family of information data transmission rates, minimal buffer sizes and values for initial buffer fullness before data is withdrawn from the buffer. Such data points may be determined through experimentation or calculation. A selected data transfer rate can be used to determine a minimally sufficient buffer size. Also, the selected data transfer rate and minimally sufficient buffer size may be used to select the initial buffer fullness required before allowing data to be removed from the buffer.

[0037] At block 706, the rate, buffer and fullness (R, B, F) values are transmitted to one or more data encoders, such as encoders 208, 210 configured to encode video and audio data, respectively. Transmission of the F parameter is optional as it is only meaningful for the acquisition of the beginning of an elementary stream which is typically not the case since viewers typically tune in at other random points in the elementary streams. At block 708, a compressed bit stream, such as an audio or video elementary stream, is created using the encoders.

[0038] At blocks 710-714, the video elementary stream, audio elementary stream and (R, B, F) parameters are passed to a multiplexer (e.g. multiplexer 222 of FIG. 2), where all three (if all three are available) are combined. The parameters may then be packetized and multiplexed with audio and video data packets. In the example of FIG. 2, the MPEG-2 system information inserter 220 sends the packetized descriptor to the multiplexer 222, while the program multiplexer 218 sends the audio and video data to the multiplexer 222.

[0039] At block 716, the multiplexed data is then transmitted to the receiver. The transmission may be by radio (RF signal), the Internet, or over any other network having any technology or topology.

[0040] The flow chart of FIG. 8 illustrates a further exemplary implementation, wherein a method 800 is employed by which buffer parameters, such as the (R, B, F) values of FIG. 6, may be set. At block 802, the transmitter selects discrete rates of data transfer at which the DTV station will be operated. The selected rates may provide the transmitter with a variety of data transfer rates, including faster and slower data transfer rates, for use with better and worse weather conditions, respectively. In the exemplary portion 200 of the transmitter 102 of FIG. 1, the robust transmission modes selection device or procedure 204 could be used to select the data rates. At block 804, each of the selected rates is associated with an appropriately sized buffer. For example, the graph of FIG. 6 could be employed to associate larger buffers with slower data transfer rates, and smaller buffers with faster data transfer rates. At block 806, for each rate and buffer size, an initial buffer fullness requirement is determined. The initial buffer fullness requirement is a quantity of data which must be met or exceeded before data may be removed from the buffer. Both the rate of data transfer and the size of the buffer impact the selection of the initial buffer fullness requirement. At block 808, a descriptor data structure is generated defining buffer configurations. At block 810, the descriptor data structure may be generated by an MPEG descriptor generator 216 (FIG. 2) or similar hardware, firmware or software structure. In one implementation, the descriptor may be configured to resemble the data structure disclosed by Tables 1 and 2.

[0041] The flow chart of FIG. 9 illustrates a further exemplary implementation, wherein a method 900 is employed by which a receiver or client may obtain and process data. At block 902, the receiver 104 determines a degree of robustness, typically selected by the transmitter 106, used in the auxiliary robust channel (e.g. 410, 510 of FIGS. 4 and 5, respectively). The receiver typically determines the degree of robustness from information (such as arrangement of symbols in a data frame) extracted from the lower transmission layers of the transmitted data. In a typical implementation, the (R, B, F) values are obtained from a data structure similar to that of Tables 1 and 2.

[0042] At block 904, in an optional implementation, the robustness value is applicable to an auxiliary robust channel, distinct from the main channel. For example, robust channels 410, 510 of FIGS. 4 and 5, respectively, may be configured to have a greater robustness than the main channels 406, 506.

[0043] At block 906, in a further optional implementation, the descriptor (e.g. the (R, B, F)-tuple or a data structure similar to Tables 1 and 2) could be obtained by communicating with the server 102 over a bi-directional channel as part of a request-response protocol.

[0044] At block 908, in a still further optional implementation, the client or receiver 104 can determine a degree of robustness via a separate out-of-band broadcast channel. This arrangement saves bandwidth within the robust channel, and may provide relatively rapid availability of the (R, B, F)-tuple and related information.

[0045] At block 910, the operation of the reference buffer 304 (FIG. 3) within the receiver is set according to the (R, B, F) values. In an exemplary configuration, a hardware circuit within the receiver 104 determines the degree of robustness in 410 or 510 selected by the transmitter and invokes the proper (R, B, F) parameter values among the set of parameter values transmitted in the descriptor to configure the buffer within memory resident in the receiver.

[0046] At block 912, in a first optional implementation, the receiver 104 automatically configures the buffer 304 (FIG. 3) at start-up in response to the (R, B, F) values. At block 914, in a second optional implementation, the receiver may automatically reconfigure the buffer 304 in response to new or updated (R, B, F) values. For example, changing environmental conditions may cause the transmitter 102 to reevaluate the level of robustness. Accordingly, the receiver 104 is configured to respond to changes in the (R, B, F)-tuple in response to new or changed information. At block 916, in a still further optional implementation, the buffer 304 is configured according to the degree to which a portion of the channel is robust. For example, were the receiver is receiving a robust portion of the channel 410, 510 (FIG. 4 and FIG. 5, respectively), the buffer would be configured differently than if a less robust portion 406, 506 of the channel was being received.

[0047] The elements of the methods shown may be performed by any desired means, such as by the execution of processor-readable instructions defined on a processor-readable media, such as a disk, a ROM or other memory device or by operation of an application specific integrated circuit (ASIC) or other hardware device. In one exemplary configuration, software/firmware may be used to implement the portions 200, 300 of FIGS. 2-3 according to an exemplary methods as seen in the flow charts of FIGS. 7-9. In a further exemplary configuration, a hardware device such as an ASIC may contain logic which implements portions 200, 300 according to an exemplary method as seen in the flow chart of FIGS. 7-9. Within the methods 700-900, actions described in any block may be performed in parallel with actions described in other blocks, may occur in an alternate order, or may be distributed in a manner which associates actions with more than one other block.

[0048] Exemplary Computer

[0049]FIG. 10 illustrates an exemplary computing environment suitable for implementing the server 102 or the client 104. Additionally, where a transmitter and receiver relationship is utilized, typically including an RF transmission from transmitter to receiver, the receiver may include a computing environment wherein in-coming data is processed. Although one specific configuration of computing environment is shown, similar configurations could be substituted.

[0050] The computing environment 1000 includes a general-purpose computing system in the form of a computer 1002. The components of computer 1002 can include, but are not limited to, one or more processors or processing units 1004, a system memory 1006, and a system bus 1008 that couples various system components including the processor 1004 to the system memory 1006.

[0051] The system bus 1008 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. An example of a system bus 1008 would be a Peripheral Component Interconnects (PCI) bus, also known as a Mezzanine bus.

[0052] Computer 1002 typically includes a variety of computer readable media. Such media can be any available media that is accessible by computer 1002 and includes both volatile and non-volatile media, removable and non-removable media. The system memory 1006 includes computer readable media in the form of volatile memory, such as random access memory (RAM) 1010, and/or non-volatile memory, such as read only memory (ROM) 1012. A basic input/output system (BIOS) 1014, containing the basic routines that help to transfer information between elements within computer 1002, such as during start-up, is stored in ROM 1012. RAM 1010 typically contains data and/or program modules that are immediately accessible to and/or presently operated on by the processing unit 1004.

[0053] Computer 1002 can also include other removable/non-removable, volatile/non-volatile computer storage media. By way of example, FIG. 10 illustrates a hard disk drive 1016 for reading from and writing to a non-removable, non-volatile magnetic media (not shown), a magnetic disk drive 1018 for reading from and writing to a removable, non-volatile magnetic disk 1020 (e.g., a “floppy disk”), and an optical disk drive 1022 for reading from and/or writing to a removable, non-volatile optical disk 1024 such as a CD-ROM, DVD-ROM, or other optical media. The hard disk drive 1016, magnetic disk drive 1018, and optical disk drive 1022 are each connected to the system bus 1008 by one or more data media interfaces 1026. Alternatively, the hard disk drive 1016, magnetic disk drive 1018, and optical disk drive 1022 can be connected to the system bus 1008 by a SCSI interface (not shown).

[0054] The disk drives and their associated computer-readable media provide non-volatile storage of computer readable instructions, data structures, program modules, and other data for computer 1002. Although the example illustrates a hard disk 1016, a removable magnetic disk 1020, and a removable optical disk 1024, it is to be appreciated that other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes or other magnetic storage devices, flash memory cards, CD-ROM, digital versatile disks (DVD) or other optical storage, random access memories (RAM), read only memories (ROM), electrically erasable programmable read-only memory (EEPROM), and the like, can also be utilized to implement the exemplary computing system and environment.

[0055] Any number of program modules can be stored on the hard disk 1016, magnetic disk 1020, optical disk 1024, ROM 1012, and/or RAM 1010, including by way of example, an operating system 1026, one or more application programs 1028, other program modules 1030, and program data 1032. Each of such operating system 1026, one or more application programs 1028, other program modules 1030, and program data 1032 (or some combination thereof) may include an embodiment of a caching scheme for user network access information.

[0056] Computer 1002 can include a variety of computer/processor readable media identified as communication media. Communication media typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.

[0057] A user can enter commands and information into computer system 1002 via input devices such as a keyboard 1034 and a pointing device 1036 (e.g., a “mouse”). Other input devices 1038 (not shown specifically) may include a microphone, joystick, game pad, satellite dish, serial port, scanner, and/or the like. These and other input devices are connected to the processing unit 1004 via input/output interfaces 1040 that are coupled to the system bus 1008, but may be connected by other interface and bus structures, such as a parallel port, game port, or a universal serial bus (USB).

[0058] A monitor 1042 or other type of display device can also be connected to the system bus 1008 via an interface, such as a video adapter 1044. In addition to the monitor 1042, other output peripheral devices can include components such as speakers (not shown) and a printer 1046 which can be connected to computer 1002 via the input/output interfaces 1040.

[0059] Computer 1002 can operate in a networked environment using logical connections to one or more remote computers, such as a remote computing device 1048. By way of example, the remote computing device 1048 can be a personal computer, portable computer, a server, a router, a network computer, a peer device or other common network node, and the like. The remote computing device 1048 is illustrated as a portable computer that can include many or all of the elements and features described herein relative to computer system 1002.

[0060] Logical connections between computer 1002 and the remote computer 1048 are depicted as a local area network (LAN) 1050 and a general wide area network (WAN) 1052. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. When implemented in a LAN networking environment, the computer 1002 is connected to a local network 1050 via a network interface or adapter 1054. When implemented in a WAN networking environment, the computer 1002 typically includes a modem 1056 or other means for establishing communications over the wide network 1052. The modem 1056, which can be internal or external to computer 1002, can be connected to the system bus 1008 via the input/output interfaces 1040 or other appropriate mechanisms. It is to be appreciated that the illustrated network connections are exemplary and that other means of establishing communication link(s) between the computers 1002 and 1048 can be employed.

[0061] In a networked environment, such as that illustrated with computing environment 1000, program modules depicted relative to the computer 1002, or portions thereof, may be stored in a remote memory storage device. By way of example, remote application programs 1058 reside on a memory device of remote computer 1048. For purposes of illustration, application programs and other executable program components, such as the operating system, are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computer system 1002, and are executed by the data processor(s) of the computer.

[0062] Conclusion

[0063] Although the subject matter has been described in language specific to structural features and/or methods, it is to be understood that the invention defined by the appended claims is not necessarily limited to the specific features or methods described herein. Rather, the specific features and methods are disclosed as exemplary forms of implementing the claimed systems and methods. 

1. A processor-readable medium comprising processor-executable instructions for: evaluating data transmission conditions; selecting, based on the evaluation of the data transmission conditions, data transfer rates; selecting buffer size values for transmission to a receiver, wherein each of the buffer size values is based on one of the selected data transfer rates; and selecting initial buffer fullness requirements, based on the selected data transfer rates and the selected buffer size values.
 2. A processor-readable medium as recited in claim 1, additionally comprising instructions for: transmitting data to a plurality of clients at one of the selected data rates; and configuring the data transmitted to include information, in lower transmission layers of a channel, which indicates to the plurality of clients a degree of robustness.
 3. A processor-readable medium as recited in claim 1, additionally comprising instructions for: generating a descriptor, comprising the selected data transfer rates, the buffer size values, and the initial buffer fullness requirements; and multiplexing the descriptor with audio and video data.
 4. A processor-readable medium as recited in claim 1, additionally comprising instructions for generating a descriptor comprising multiple sets of (R, B, F)-tuplets.
 5. A processor-readable medium as recited in claim 1, additionally comprising instructions for: generating a descriptor, comprising a set of selected data transfer rates, buffer size values, and initial buffer fullness requirements; and transmitting the descriptor to a client.
 6. A processor-readable medium as recited in claim 5, additionally comprising instructions for: transferring the descriptor to the client as part of a request-response protocol over a bi-directional channel.
 7. A processor-readable medium as recited in claim 5, wherein: the descriptor is configured for MPEG compatibility; and the descriptor is multiplexed with the audio and video data at regular intervals.
 8. A processor-readable medium as recited in claim 5, additionally comprising instructions for configuring syntax for the descriptor according to: sd_profile_level( ) {  subdescriptor_tag  profile_level  bm_params_count  for(i=0; i<bm_params_count; i++){   reserved   bit_rate_value   reserved   vbv_buffer_size  } }.


9. A processor-readable medium as recited in claim 1, wherein selecting data transfer rates comprises additional instructions for: reducing an overall bit-rate of a transmission when increasing robustness of a portion a communications channel; and increasing the overall bit-rate of the transmission when decreasing robustness of the portion the communications channel.
 10. A processor-readable medium as recited in claim 1, wherein evaluating data transmission conditions comprises instructions for evaluating environmental impediments to RF transmission.
 11. A processor-readable medium comprising processor-executable instructions for transmitting robust data from a transmitter to a receiver, the processor-executable instructions comprising instructions for: establishing a rate of data transmission and a level of redundancy; specifying parameters, including the rate, for operation of a buffer on the receiver; and transmitting the parameters at intervals to the receiver.
 12. A processor-readable medium as recited in claim 11, wherein establishing the rate of data transmission comprises further instructions for: evaluating environmental conditions as an input to establishing the rate of data transmission; and selecting between discrete rates of data transmission based on the environmental conditions.
 13. A processor-readable medium as recited in claim 11, wherein specifying parameters comprises instructions for: specifying a minimal buffer size for the buffer on the receiver; and specifying a value for initial buffer fullness prior to data removal for the buffer on the receiver.
 14. A processor-readable medium as recited in claim 11, wherein specifying parameters comprises instructions for: specifying a value for initial buffer fullness prior to data removal for the buffer on the receiver based on size of the buffer on the receiver and on the rate of data transmission.
 15. A processor-readable medium as recited in claim 11, wherein establishing the rate of data transmission and the level of redundancy comprises: making a bit stream available to a first portion of a communications channel to have greater robustness; and making the bit stream available to a second portion of the communications channel to have lesser robustness.
 16. A processor-readable medium comprising processor-executable instructions for configuring a receiver to receive data, the processor-executable instructions comprising instructions for: obtaining a descriptor comprising values for rate, buffer size and initial buffer fullness; configuring a buffer within the receiver according to the descriptor; and removing data from the buffer when the buffer reaches the initial buffer fullness.
 17. A processor-readable medium as recited in claim 16, additionally comprising instructions for obtaining the descriptor from a request-response protocol over a bi-directional channel.
 18. A processor-readable medium as recited in claim 16, additionally comprising instructions for obtaining the descriptor from a broadcast signal transmitting the descriptor repeatedly at intervals.
 19. A processor-readable medium as recited in claim 16, additionally comprising instructions for: measuring signal quantities; selecting between a main portion of a channel or a robust portion of the channel depending on the signal quantities.
 20. A processor-readable medium as recited in claim 19, wherein measuring signal quantities comprises instructions, selected from a group of instructions, for: measuring a signal-to-noise ratio; measuring a carrier-to-noise ratio; measuring an average signal energy level; measuring a number of corrupted data packets in a given time window; measuring peak energy; measuring run-length of corrupted data packets; and measuring residual energy in an equalizing filter.
 21. A processor-readable medium as recited in claim 16, additionally comprising instructions for: using a main portion of a channel, having conventional robustness, when acquisition conditions are acceptable; and switching to a robust portion of the channel when quantities calculated to indicate signal conditions indicate deterioration.
 22. A processor-readable medium as recited in claim 21, wherein switching to a robust portion comprises instructions for: using buffer parameters contained within the descriptor to adjust the buffer according to a rate of the robust portion of the channel; and moving data from the robust portion of the channel into the buffer.
 23. A transmitter, comprising: a robust transmission selection module to select a rate of data transmission based on a review of environmental conditions; video and audio encoders to encode data at the selected rate of data transmission; a descriptor generator to generate a descriptor reflecting buffer parameters associated with the selected rate for use by a receiver; and a multiplexer to multiplex the descriptor with the encoded data.
 24. The transmitter of claim 23, wherein the descriptor generator generates a descriptor, comprising: the selected rate; a buffer size to be configured by the receiver; and an initial buffer fullness value.
 25. The transmitter of claim 23, wherein the descriptor generator is configured to generate multiple sets of (R, B, F)-tuplets.
 26. The transmitter of claim 23, wherein the descriptor generator is configured to generate the descriptor according to the syntax: sd_profile_level( ) {  subdescriptor_tag  profile_level  bm_params_count  for(i=0; i<bm_params_count; i++){   reserved   bit_rate_value   reserved   vbv_buffer_size  } }.


27. The transmitter of claim 23, additionally comprising a system information inserter to pass the descriptor to the multiplexer at intervals.
 28. A receiver, comprising: logic configured for detecting a descriptor; logic configured for obtaining (R, B, F) values from the descriptor; and logic configured for setting a receiver buffer according to the (R, B, F) values.
 29. The receiver of claim 28, wherein the logic configured for detecting the descriptor comprises logic configured for obtaining the descriptor from a bi-directional channel.
 30. The receiver of claim 28, wherein the logic configured for setting the receiver buffer comprises logic configured for reconfiguring the receiver buffer in response to new or updated (R, B, F) values.
 31. A method of moving data from a transmitter to a receiver, comprising: detecting conditions requiring redundancy; selecting from among available discrete rates by which data can be transmitted, wherein the selected rate provides redundancy sufficient for the conditions detected; generating a descriptor comprising the selected rate, a minimum required buffer size and a required initial buffer fullness; multiplexing the descriptor and the data; and transmitting the multiplexed data to the receiver.
 32. The method of claim 31, additionally comprising: inserting the descriptor into the multiplexed data at least one time per second.
 33. The method of claim 31, additionally comprising configuring, using the descriptor, a buffer within the receiver to receive the multiplexed data.
 34. A receiver, comprising: detecting a descriptor within data transmitted by a transmitter; monitoring reception characteristics and statistics, to select between conventional and robust channels within the transmitted data to reliably receive data; obtaining data transmission rate information and identifying a corresponding set of buffer parameters from the descriptor; configuring memory resources and flow control logic to provide elementary stream acquisition according to guidelines embodied by buffer parameters associated with the selected transmission channel; and buffering the received data until a buffer contains more than an initial buffer fullness value included within the buffer parameters.
 35. The receiver of claim 34, additionally comprising instructions for reconfiguring the memory resources and the flow control logic upon receipt of a descriptor having updated data.
 36. A transmitter, comprising: means for evaluating data transmission conditions; means for specifying (R, B, F) parameter values comprising rate, buffer size and an initial buffer fullness in response to the evaluated data transmission conditions; means for creating a compressed bit stream using an encoder; and means for combining the (R, B, F) parameter values with the compressed bit stream in a multiplexer.
 37. The transmitter of claim 36, additionally comprising: means for generating a descriptor comprising multiple sets of (R, B, F)-tuplets; and means for transmitting the compressed bit stream and the descriptor to a plurality of clients a selected data rate.
 38. The transmitter of claim 36, additionally comprising: means for generating a descriptor, comprising the specified data transfer rates, the buffer size values, and the initial buffer fullness requirements; and means for multiplexing the descriptor with audio and video data.
 39. A receiver, comprising: means for detecting a descriptor within transmitted data; means for deciding, by monitoring reception characteristics and statistics, which conventional and robust channels within the transmitted data to select to reliably receive audio, video and data elementary streams; means for determining a data transmission rate and for identifying a corresponding set of buffer parameters from the descriptor; means for configuring memory resources and flow control logic to provide elementary stream acquisition according to guidelines embodied by buffer parameters associated with the selected transmission channel; and means for decoding the transmitted data when a buffer contains greater than an initial buffer fullness value found within the buffer parameters.
 40. The receiver of claim 39, wherein the means for configuring memory resources and flow control logic reconfigures the buffer upon receipt of a descriptor having updated data.
 41. The transmitter of claim 27, wherein the system information inserter passes the descriptor to the multiplexer approximately twice per second.
 42. The transmitter of claim 23, wherein the robust transmission selection module configures a portion of a communication channel for increased robustness and configures another portion of the same communication channel for a typical level of robustness. 